Page History: MarketData Request
Compare Page Revisions
Page Revision: 2012/10/10 17:38
Subscribing to Streaming DataThe T4 FIX API provides (optional) subscriptions to streaming market data for all markets available in order routing. Market data is made available asyncronously and concurrently to order routing flow. The market data subscriptions are provided per FIX Session and are initiated by a Market Data Request messages (Tag 35=V). A Market Data Request is a general request for streaming of market data quotes on specific securities. Under the FIX T4 API, securities are defined by the Exchange, contracts within an exchange and markets for a specific contracts (Tag 48). Exchanges are identified by an unique Exchange ID in Tag 207 (SecurityExchange). Contracts are characterised by the its Contract ID in Tag 55 (Symbol). Markets are identified by an unique Market ID by Tag 48 (SecurityID).
At any time during a FIX Session, market data subscriptions can be requested for a specific market by specifying a Subscription Request Type (Tag 263=1). During a FIX session, the streaming market data (for any specific security) can be also unsubscribed (Tag 263=2).
A successful Market Data Request for subscription returns one or more Market Data messages containing one or more Market Data Entries. Currently, The T4 FIX API provides market updates with the MarketSnapshot message (Tag 35=W). MarketDataSnapshots carry multiple blocks of quote data delineated by Market Data Entries. Each Market Data Entry is a bid, an offer, a trade associated with a security, the opening, closing, or settlement price of a security, the value of an index, the trading session high price, low price, or trade volume, open interest in a security and low and high price limits. Market Data Entries usually have a price, a quantity (size) at a book level (for securities with market depth). For example, in an order book environment, requesting just the top of book would result in two active Market Data Entries at a time – one for the Best Bid and one for the Best Offer. For a full book, the bid and offer sides may each have several Market Data Entries corresponding to multiple book levels.
Subscription TypesThe following Subscription Request Type control the initiation, termination and attributes of streaming market data messages:
SnapShot + Updates: A Snapshot + Updates (Tag 263=1) causes the current state of the market to be sent, and any updates as they occur, until the client requests that the Snapshot + Updates be unsubscribed.
When Snapshot + Updates is requested, updates may be full or incremental:
Full Refresh: This mode is optimized to trade off increased bandwidth for simplicity in processing and is intended for requests on only a few instruments. Each FIX Market Data message (in response to a market data subscription request) will contain the complete data requested for one instrument. If more than just the top of book is requested, this means that both sides, and all price tiers, must be reported in that Market Data message.
Incremental Refresh: This mode is optimized for handling requests for many instruments while conserving bandwidth. Each Market Data Entry is assigned an MDEntryID unique among all other active entries, and several incremental updates of entries for different instruments can be included in one FIX Market Data message. Currently, this mode is not implemented. Therefore, all incrementals refreshes are sent as snapshot.
UnSubscribe: Unsubscribing from currently streaming market data is specified with an "Unsubscribe" Subscription Request Type (Tag 263=2).
SnapShot: A Snapshot (Tag 263=0) causes the current state of the market to be sent. Currently, this request type is equivalent to Snapshot + Updates. Note that as the data flow is driven by Market Data Snapshot messages, the complete snapshot of a market can be attained by the a receipt of a single Snapshot messages. For a complete description of the market and upon start of a subcription, the T4 FIX API also sends a snapshot message associated with non-book entries (e.g. Trade Volume, session high and low, etc.)
Data Throughput and Buffering LevelsThe F4 FIX API offers over several levels of data throughput. This control over the number and transmittal speed of quotes to the subscribe API client. Appropriately, the T4 FIX API buffers streaming market data flow and dessiminates quotes at the level requested by teh API client. The following data troughput buffering levels are available.
0.
Full Refresh: Same as Smart Buffering.
1.
Incremental Refresh: Same as Smart Buffering.
2.
SlowTrade: Same as SlowSmart buffering plus every individual trade is received as well. Should be used sparingly due to high bandwidth and potentially large number of messages being recieved during busy market periods.
3.
SmartTrade: Same as Smart buffering plus every individual trade is received as well. Should be used sparingly due to high bandwidth and potentially large number of messages being recieved during busy market.
4.
SlowSmart: Slowed down version of smart buffering for lower bandwidth usage. This produces depth updates about once per second per market if changes have occurred.
5.
Smart: Smart buffering, depth is sent out on different buffering intervals dependent on what has changed in the depth. Changes to the best bid, offer or last trade are sent out frequently, changes that are off the market are sent out less frequently.
6.
FastSmart: Faster version of smart buffering, sends out changes to best bid or offer prices more frequently. Much higher bandwidth usage.
7.
All: All depth updates, no buffering. Not supported by API applications. Specifying this subscription level in the API will result in Smart buffering level.
Same as FastSmart buffering plus every individual trade is received as well. Should be used sparingly due to high bandwidth and potentially large number of messages being recieved during busy market periods.
8.
FastTrade: Same as FastSmart buffering plus every individual trade is received as well. Should be used sparingly due to high bandwidth and potentially large number of messages being recieved during busy market periods.
9.
TradeOnly: Every individual trade is received, but nothing else - no depth, settlement, highlow, pricelimits or market mode etc.
Book DepthThe T4 FIX API Book Depth controls the number of book levels received for each depth update. Up to 10 book levels are available. The number of levels in the market data book is requested with MarketDepth (Tag 264). Higher number of levels will result in increased bandwith requirements. If the best bid/offer is just needed for a quote board, a subscription to Level 1 is recommended. If a market is to show all depth lines, subscription to a Market Depth of 10 is required. Even if such market does not support 10 levels of market data, the T4 FIX API will provide the maximum number of levels that market currently suppports.
Message Dictionary
Tag | Field Name | Req'd | Comments |
---|
| Standard Header | Y | MsgType = V |
262 | MDReqID | Y | Must be unique, or the ID of previous Market Data Request to disable if SubscriptionRequestType = Disable previous Snapshot + Updates Request (2). |
263 | SubscriptionRequestType | Y | SubcriptionRequestType indicates to the other party what type of response is expected. A snapshot request only asks for current information. A subscribe request asks for updates as the status changes. Unsubscribe will cancel any future update messages from the counter party. The permissible values are: |
| | | 0 = SnapShot |
| | | 1 = Enable Snapshot + Updates (Subscribe |
| | | 2 = Disable previous Snapshot + Update Request (Unsubscribe) |
264 | MarketDepth | Y | Depth of market of Subscription or Snapshot. T4 currently supports up to 10 levels for selected markets. |
265 | MDUpdateType | N | Specifies the type of Market Data throughput (buffering). The permissible values are: |
| | | 0 = Full Refresh. Equivalent to T4 Smart. |
| | | 1 = Incremental Refresh. Equivalent to T4 Smart. |
| | | 2 = T4 Slow Trade |
| | | 3 = T4 Smart Trade |
| | | 4 = T4 Slow Smart |
| | | 5 = T4 Smart |
| | | 6 = T4 Fast Smart |
| | | 7 = T4 All |
| | | 8 = T4 Fast Trade |
| | | 9 = T4 Trade Only |
266 | AggregatedBook | N | Not Used. Specifies whether or not book entries should be aggregated. |
286 | OpenCloseSettlFlag | N | Not Used. Can be used to clarify a request if MDEntryType = Opening Price(4), Closing Price(5), or Settlement Price(6). |
| Start Repeating Group | Y |
267 | NoMDEntryTypes | Y | Number of MDEntryType fields requested. Repeating Group. |
269 | MDEntryType | Y | Emtry Type. Must be the first field in this repeating group. This is a list of interested Market Data Entries. The permissible values can be: |
| | | 0 = Bid |
| | | 1 = Offer |
| | | 2 = Implied Bid |
| | | 3 = Implied Offer |
| | | 4 = Last Trade |
| | | 6 = Settlement |
| | | 7 = Session High |
| | | 8 = Session Low |
| | | K = Price High Limit |
| | | L = Price Low Limit |
| | | B = Trade Volume |
| End Repeating Group | Y |
| Start Repeating Group | Y |
146 | NoRelatedSym | Y | Number of symbols (instruments) requested. Repeating Group. |
55 | Symbol | Y | Symbol. Must be the first field in this repeating group. This is the T4 Contract ID. |
48 | SecurityID | Y | Security identifier. This is the T4 Market ID. |
167 | SecurityType | Y | Instrument type. Futures="FUT", Options="OPT", Stock="STK", Synthetic="SYN", Binary Option="BIN" |
200 | MaturityMonthYear | N | Specifies the month and year of maturity. |
201 | PutOrCall | N | For Options. Indicates whether an Option is for a put or call. Put = 0. Call = 1. |
202 | StrikePrice | N | For Options. Strike Price. Not currently used. |
207 | SecurityExchange | Y | Can be used to identify the security. This is the T4 Exchange ID. |
| End Repeating Group | Y |
1070 | QuoteType | N | Pricing Scheme for Quotes. Ticks = 1, Decimal = 2. |
| Standard Trailer | Y |
Sample Message
Subscribe to streaming data from a specific market
>> 10/10/2012 9:37:58 AM [FIXMARKETDATAREQUEST] 34=1891|49=T4Test|56=test|52=20121010-14:37:58.720|262=md-10/10/2012 9:37:58 AM|263=1|264=10|265=5|1070=1|267=3|269=0|269=1|269=2|146=1|55=ES|48=CME_20121200_ESZ2|167=FUT|207=CME_Eq|
[FIXMARKETDATAREQUEST]
[MsgSeqNum] 34 = 1891
[SenderCompID] 49 = T4Test
[TargetCompID] 56 = test
[SendingTime] 52 = 20121010-14:37:58.720
[MDReqID] 262 = md-10/10/2012 9:37:58 AM
[SubscriptionRequestType] 263 = 1 (SNAPSHOT_PLUS_UPDATES)
[MarketDepth] 264 = 10
[MDUpdateType] 265 = 5 (SMART)
[MDQuoteType] 1070 = 1 (TICKS)
[NoMDEntryTypes] 267 = 3
[MDEntryType] 269 = 0 (BID)
[MDEntryType] 269 = 1 (OFFER)
[MDEntryType] 269 = 2 (IMPLIED_BID)
[NoRelatedSym] 146 = 1
[Symbol] 55 = ES
[SecurityID] 48 = CME_20121200_ESZ2
[SecurityType] 167 = FUT (FUTURE)
[SecurityExchange] 207 = CME_Eq
UnSubscribe from a currently streaming market
>> 10/10/2012 9:37:59 AM [FIXMARKETDATAREQUEST] 34=1892|49=T4Test|56=test|52=20121010-14:37:59.765|262=md-10/10/2012 9:37:59 AM|263=2|264=10|265=5|1070=1|267=3|269=0|269=1|269=2|146=1|55=ES|48=CME_20121200_ESZ2|167=FUT|207=CME_Eq|
[FIXMARKETDATAREQUEST]
[MsgSeqNum] 34 = 1892
[SenderCompID] 49 = T4Test
[TargetCompID] 56 = test
[SendingTime] 52 = 20121010-14:37:59.765
[MDReqID] 262 = md-10/10/2012 9:37:59 AM
[SubscriptionRequestType] 263 = 2 (DISABLE_PREVIOUS_SNAPSHOT_PLUS_UPDATE_REQUEST)
[MarketDepth] 264 = 10
[MDUpdateType] 265 = 5 (SMART)
[MDQuoteType] 1070 = 1 (TICKS)
[NoMDEntryTypes] 267 = 3
[MDEntryType] 269 = 0 (BID)
[MDEntryType] 269 = 1 (OFFER)
[MDEntryType] 269 = 2 (IMPLIED_BID)
[NoRelatedSym] 146 = 1
[Symbol] 55 = ES
[SecurityID] 48 = CME_20121200_ESZ2
[SecurityType] 167 = FUT (FUTURE)
[SecurityExchange] 207 = CME_Eq
FIX API Home Page.